package gwtool.container;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class PruefungAnzeigen implements Comparable<PruefungAnzeigen> {

	private InlinePruefung naechstePruefung;

	private Date naechtePruefungAm;

	private long tageBisZurPruefung = 0;

	private DateFormat fmt = new SimpleDateFormat("dd.MM.yy");

	public PruefungAnzeigen() {

	}

	public PruefungAnzeigen(InlinePruefung naechstePruefung, long tageBisZurPruefung, Date naechtePruefungAm) {

		this.naechstePruefung = naechstePruefung;
		this.tageBisZurPruefung = tageBisZurPruefung;
		this.naechtePruefungAm = naechtePruefungAm;
	}

	@Override
	public String toString() {

		if (naechstePruefung == null) {
			return "";
		}

		if (naechtePruefungAm == null) {
			return "Nicht Geprüft";
		}

		StringBuilder b = new StringBuilder(fmt.format(naechtePruefungAm));

		if (tageBisZurPruefung > 0) {
			b.append(" in ");
			b.append(tageBisZurPruefung);
			b.append(" Tagen");
		} else {
			b.append(" seit ");
			b.append(Math.abs(tageBisZurPruefung));
			b.append(" Tagen");
		}
		return b.toString();
	}

	public boolean pruefungFaellig() {

		return tageBisZurPruefung <= 0;
	}

	public boolean pruefungFaelligInTagen(int tage) {

		return tageBisZurPruefung <= tage + 0;
	}

	@Override
	public int compareTo(PruefungAnzeigen o) {

		if (o.getNaechstePruefungAm() == null) {
			return -1;
		}
		if (naechtePruefungAm == null) {
			return 1;
		}
		return naechtePruefungAm.compareTo(o.getNaechstePruefungAm());
	}

	public Date getNaechstePruefungAm() {

		return naechtePruefungAm;
	}

	public String getIdentifer() {

		return naechstePruefung.getIdentifier();
	}

	public String getPruefungsName() {

		if (naechstePruefung == null) {
			return "";
		}
		return naechstePruefung.getName();
	}
}
